<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <title>Gebruikers account aanvragen</title>
  </head>
  <body>
    <FORM ACTION="051R5-Register.php" METHOD="POST">
<?php
  session_start();
  require_once("./dbConnect.inc");
    
  if (isset($_POST["submit"])) {
    processForm();
  } else {
    viewForm ();
  }

  function viewForm () {
    if (isset($_GET['message'])) {
      $statusmessage = $_GET['message'];
    } else {
      $statusmessage = "";
    }

    if (isset($_GET['fullname'])) {
      $fullname = $_GET['fullname'];
    } else {
      $fullname = "";
    }

    if (isset($_GET['email'])) {
      $email = $_GET['email'];
    } else {
      $email = "";
    }
    
    if (isset($_GET['username'])) {
      $username = $_GET['username'];
    } else {
      $username = "";
    }
    
    echo <<<FRM
         <DIV id="a" style="width:100%;">
           <BR><BR><BR><BR>
           <DIV id="b" style="width:20%;float:left;">
             <BR>
           </DIV>
           <DIV id="c" style="width:80%;float:left;">
             <h2>Vul uw gegevens in en klik op verstuur.</h2><BR>
             <DIV id="d" style="width:110px;float:left;">
               <label for="name">Naam : </label><BR><BR>
               <label for="name">Gebruikersnaam : </label><BR><BR>
               <label for="name">Wachtwoord : </label><BR><BR>
               <label for="name">Email adres : </label><BR><BR>
               <P>
               <INPUT TYPE="submit" NAME="submit" VALUE="Verzenden">
               </P>
             </DIV>
             <DIV id="e" style="width:100px;float:left;">
               <INPUT TYPE="text" NAME="fullname" VALUE="$fullname"><BR><BR>
               <INPUT TYPE="text" NAME="username" VALUE="$username"><BR><BR>
               <INPUT TYPE="password" NAME="password"><BR><BR>
               <INPUT TYPE="text" NAME="email" VALUE="$email"><BR><BR>

             </DIV>
           </DIV>
           <DIV id="f" style="width:20%;float:left;">
             <BR>
           </DIV>
              <DIV id="b" style="width:50%;float:left;">
                <P>$statusmessage</P>
              </DIV>
         </DIV>
FRM;
  }
  
  function processForm() {
    global $databaseConnection;
    $message = "";
    $allFieldsValidated = true;
    $fullname = isset($_POST["fullname"]) ? $_POST["fullname"] : "";
    $username = isset($_POST["username"]) ? $_POST["username"]: "";
    $password = isset($_POST["password"]) ? $_POST["password"] : "";
    $email = isset($_POST["email"]) ? $_POST["email"] : "";

    if (isset($_POST["fullname"]) AND isset($_POST["email"]) AND isset($_POST["username"]) AND isset($_POST["password"])) {
      
      if (strlen($_POST["username"]) < 3) {
        $message .= "De gebruikersnaam is te kort. Deze moet tenminste 3 characters lang zijn<BR><BR>";
        $allFieldsValidated = false;
      }

      if (strlen($_POST["password"]) < 8) {
        $message .= "Het wachtwoord is te kort.<BR>Deze moet tenminste 8 characters lang zijn<BR><BR>";
        $allFieldsValidated = false;
      }

      if (!validEmail($_POST["email"])) {
        $message .= "Het email adres is ongeldig.<BR>Gebruik een ander email adres
          in de vorm: naam@domein.nl<BR>
          Naam en domein mogen alleen uit hoofd- en kleine letters bestaan<BR>
          en naam en domein moeten tenminste 2 characters lang zijn.<BR><BR>";
        $allFieldsValidated = false;
      }

      } else {
        $message .= "Niet alle velden zijn ingevuld.";
        $allFieldsValidated = false;
      }

    if ($allFieldsValidated) {
      
      $qUser = "SELECT username FROM gebruikers where username = '$username'";
      
      $queryResult = mysqli_query($databaseConnection, $qUser);
      
      if ($queryResult && mysqli_num_rows($queryResult) > 0) {
        //gebruiker bestaat al. Ga naar de vorige pagina.
        $message = "Deze gebruikersnaam bestaat al. Probeer een andere gebruikersnaam";
        header("Location: 051R5-Register.php?fullname=$fullname&username=$username&email=$email&message=$message");
      } else {
        mysqli_free_result($queryResult);
        //gebruikers worden standaard goedgekeurd en géén admin. Zie gebruikers tabel
        $md5Password = md5($password);
        $qSaveUser = "CALL sp_nieuweGebruiker('$fullname', '$username', '$md5Password', '$email')";
        $queryResult = mysqli_query($databaseConnection, $qSaveUser);
        
        if ($queryResult) {
          //Gebruiker is succesvol geregistreerd en wordt direct aangemeld
          //en naar de begin pagina doorgestuurd.
          $_SESSION["statusmessage"] = $_POST["fullname"];
          $_SESSION["username"] = $_POST["username"];
          header("Location: index.php");
        }
      }
    } else {
      //Niet alle velden zijn correct ingevuld.
      header("Location: 051R5-Register.php?fullname=$fullname&username=$username&email=$email&message=$message");
    }
  }
  
    function validEmail($email) {
      $regex = '/([a-zA-Z]{2,})@([a-zA-Z]{2,})\.nl$/';

      if (preg_match($regex, $email)) {
        return true;
      } else {
        return false;
      }
    }
?>
   </FORM>
  </body>
</html>
